1. Field of the Invention
The present invention relates to the field of componentized application environments and more particularly to the extension of a user interface for a componentized application environment.
2. Description of the Related Art
A componentized application environment is an application environment constructed at runtime from an arrangement of application components specified as plug-ins to extension points of the componentized application environment. As embodied by the Eclipse™ platform (Eclipse is a trademark of the Eclipse Foundation having a Web site at the domain, eclipse.org), a componentized application environment can provide for the augmentation of the functionality or appearance of an application merely by declaring an extension point to an exposed portion of an existing application component, and by registering a plug-in to the application component to provide the additional functionality or appearance. In this way, existing applications can be easily extended without tampering with the underlying code of the application component.
Generally, a componentized application environment, including the Eclipse platform, can provide an extension model that allows application contributors to add new user interface components to an existing application. Specifically, the user interface of an existing application can be extended by creating a new plug-in to the componentized application environment, and by providing extension definitions for existing extension points. While the extension model provides a powerful method for adding new functionality to an application, the foregoing extension model does not allow for the modification or removal of existing application components.
More specifically, to ensure that an application can be reused in as many deployments of the application as possible, it is desirable to build an application such that the application can be modified to suit the requirements of a specific deployment. Also, to provide effective support and “fix-pack” delivery for a deployed application, it is desirable to apply deployment specific modifications without directly altering the assets of the application. Yet, at present, to modify a deployed application to suit the requirements of a specific deployment, or to apply a fix-pack to an existing deployment requires the direct modification of the deployed application.
For instance, in the Eclipse environment, a user interface can be created through the direct instructions of program code using a standard widget toolkit. As a result, to permit the external modification of the user interface programmatically, the developer must be certain to expose the relevant data and method members of the user interface. As an alternative, it is well known to utilize a markup language description of Eclipse user interface components in an application. In the latter circumstance, the inherent functionality of a standard widget toolkit can be sacrificed for the benefit of the extensibility of the user interface. Moreover, to extend the user interface defined by a markup language specification requires the modification of the markup language specification, thereby violating at least one premise of the Eclipse programming model and inhibiting the delivery of fix-packs in providing release to release migration.